#include<iostream>
using namespace std;


// retun表示函数返回，会调用局部对象的析构函数，main()函数中的return还会调用全局对象的析构函数。
// exit()表示终止进程，不会调用局部对象的析构函数，只调用全局对象的析构函数。
// exit()会执行清理工作，然后退出，_exit()和_Exit()直接退出，不会执行任何清理工作。

struct AA 
{
    string name;

    AA(const string & str):name(str){}

    ~AA()
    {
        cout << name << "调用了析构函数。" << endl;
    }
};

// 全局对象
AA a1("对象a1");

int main(int agrc, char* argv[])
{
    AA a2("对象a2");

    // return 0; // return会调用局部对象的析构函数
    exit(0);  // exit只会调用全局对象的析构函数
}